dhtmlXCombo.prototype.attachChildCombo = function(_chcombo, xml) {
    if (!this._child_combos) {
        this._child_combos = []
    };
    this._has_childen = 1;
    this._child_combos[this._child_combos.length] = _chcombo;
    _chcombo.show(0);
    var that = this;
    var _arg_length = arguments.length;
    this.attachEvent("onChange", function() {
                for (var i = 0; i < that._child_combos.length; i++) {
                    if (that._child_combos[i] == _chcombo) {
                        _chcombo.show(1);
                        _chcombo.callEvent("onMasterChange", [that.getActualValue(), that])
                    }
                };
                if (that.getActualValue() == "") {
                    that.showSubCombo(that, 0);
                    return
                };
                if (_chcombo._xml) {
                    if (_arg_length == 1)
                        xml = _chcombo._xml;
                    _chcombo._xml = that.deleteParentVariable(xml) + ((_chcombo._xml.indexOf("?") != -1) ? "&" : "?") + "parent=" + that.getActualValue()
                } else {
                    if (xml) {
                        _chcombo.clearAll(true);
                        xml = that.deleteParentVariable(xml) + ((xml.indexOf("?") != -1) ? "&" : "?") + "parent=" + that.getActualValue();
                        _chcombo.loadXML(xml)
                    }
                }
            })
};
dhtmlXCombo.prototype.setAutoSubCombo = function(xml, name) {
    if (arguments.length == 1)
        name = "subcombo";
    if (!this._parentCombo) {
        var z = new dhtmlXCombo(this.DOMParent, name, this.DOMelem.style.width);
        z._parentCombo = this
    } else {
        var z = new dhtmlXCombo(this._parentCombo.DOMParent, name, this._parentCombo.DOMelem.style.width);
        z._parentCombo = this._parentCombo
    };
    if (this._filter)
        z._filter = 1;
    if (this._xml) {
        if (arguments.length > 0)
            z._xml = xml;
        else
            z._xml = this._xml;
        xml = z._xml;
        z._autoxml = this._autoxml;
        if (this._xmlCache)
            z._xmlCache = []
    };
    this.attachChildCombo(z, xml);
    return z
};
dhtmlXCombo.prototype.detachChildCombo = function(_chcombo) {
    for (var i = 0; i < this._child_combos.length; i++) {
        this._child_combos[i] == _chcombo;
        this._child_combos.splice(i, 1)
    };
    _chcombo.show(1)
};
dhtmlXCombo.prototype.showSubCombo = function(combo, state) {
    if (combo._child_combos) {
        for (var i = 0; i < combo._child_combos.length; i++) {
            combo._child_combos[i].show(state);
            combo.showSubCombo(combo._child_combos[i], 0)
        }
    }
};
dhtmlXCombo.prototype.deleteParentVariable = function(str) {
    str = str.replace(/parent\=[^&]*/g, "").replace(/\?\&/, "?");
    return str
};